﻿using Onshi.POS.Clientes.Vistas;
using Onshi.POS.Clientes;
using Onshi.POS.Formularios.Recursos;
using Onshi.POS.Modelo.Entidades;
using Onshi.POS.Modelo.Entidades.Tipos;
using Onshi.POS.Modelo.Objectos;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;

namespace Onshi.POS.Formularios
{
    public partial class ClientesDetalle : FormularioBase, IClientesDetalle
    {
        #region Constructores

        public ClientesDetalle(Int32 idCliente)
        {
            InitializeComponent();
            presentador = new ClientesDetallePresentador(this);
            this.idCliente = idCliente;
        }

        #endregion

        #region Atributos

        private ClientesDetallePresentador presentador;
        private Int32 idCliente;
        private Int32 idRubroCliente;
        private Int32 idListaPrecioVenta;
        private Int32 idVendedor;

        #endregion

        #region Propiedades

        [Browsable(false)]
        public Byte[] Imagen
        {
            set { picImagen.Image = ManejoImagen.ByteAImagen(value); }
        }

        [Browsable(false)]
        public Int32 IdCliente
        {
            get { return idCliente; }
        }

        [Browsable(false)]
        public Int32 IdVendedor
        {
            set { idVendedor = value; }
        }

        [Browsable(false)]
        public Int32 IdRubroCliente
        {
            set { idRubroCliente = value; }
        }

        [Browsable(false)]
        public String Codigo
        {
            set { txtCodigo.Text = value; }
        }

        [Browsable(false)]
        public String Nombre
        {
            set { txtNombre.Text = value; }
        }

        [Browsable(false)]
        public String LimiteDeuda
        {
            set { txtLimiteDeuda.Text = value; }
        }

        [Browsable(false)]
        public String Email
        {
            set { txtEmail.Text = value; }
        }

        [Browsable(false)]
        public String SitioWeb
        {
            set { txtSitioWeb.Text = value; }
        }

        [Browsable(false)]
        public String Estado
        {
            set { txtEstado.Text = value; }
        }

        [Browsable(false)]
        public String Observaciones
        {
            set { txtObservaciones.Text = value; }
        }

        [Browsable(false)]
        public List<DomicilioCliente> ListadoDomicilios
        {
            set { bsDomicilios.DataSource = new SortableList<DomicilioCliente>(value); }
        }

        [Browsable(false)]
        public List<TelefonoCliente> ListadoTelefonos
        {
            set { bsTelefonos.DataSource = new SortableList<TelefonoCliente>(value); }
        }

        [Browsable(false)]
        public Int32 IdListaPrecioVenta
        {
            set { idListaPrecioVenta = value; }
        }

        [Browsable(false)]
        public String Cuit
        {
            set { txtCuit.Text = value; }
        }

        [Browsable(false)]
        public String RubroClienteNombre
        {
            set { txtRubroCliente.Text = value; }
        }

        [Browsable(false)]
        public String TipoIvaNombre
        {
            set { txtTipoIva.Text = value; }
        }

        [Browsable(false)]
        public String VendedorCodigoNombre
        {
            set { txtVendedor.Text = value; }
        }

        [Browsable(false)]
        public String ListaPrecioVentaNombre
        {
            set { txtListaPrecioVenta.Text = value; }
        }

        [Browsable(false)]
        public List<TipoFormaPago> ListadoTiposFormasPagos
        {
            set { lstTiposFormasPagos.DataSource = value; }
        }

        [Browsable(false)]
        public List<ClienteCampoPersonalizadoCliente> ListadoCamposPersonalizados
        {
            set
            {
                var alto = 3;
                foreach (var item in value)
                {
                    var panel = new Panel();
                    panel.Name = Convert.ToString(item.Entidad.Id);
                    panel.Size = new Size(598, 45);
                    panel.Location = new Point(3, alto);
                    panel.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right;
                    
                    var etiqueta = new EtiquetaBase();
                    etiqueta.Location = new Point(3, 6);
                    etiqueta.AutoSize = true;
                    etiqueta.Text = item.Entidad.Nombre;

                    var texto = new TextoBase();
                    texto.Size = new Size(592, 20);
                    texto.Location = new Point(3, 22);
                    texto.BackColor = SystemColors.Control;
                    texto.ReadOnly = true;
                    texto.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right;
                    texto.Text = item.Valor;

                    panel.Controls.Add(etiqueta);
                    panel.Controls.Add(texto);

                    panCamposPersonalizados.Controls.Add(panel);
                    alto += 51;
                }
            }
        }

        #endregion

        #region Eventos

        private void btnRubroCliente_Click(Object sender, EventArgs e)
        {
            var rubrosClientesDetalle = new RubrosClientesDetalle(idRubroCliente);
            rubrosClientesDetalle.ShowDialog();
        }

        private void btnVendedor_Click(Object sender, EventArgs e)
        {
            var vendedoresDetalle = new VendedoresDetalle(idVendedor);
            vendedoresDetalle.ShowDialog();
        }

        private void btnListaPrecioVenta_Click(Object sender, EventArgs e)
        {
            var listasPreciosVentasDetalle = new ListasPreciosVentasDetalle(idListaPrecioVenta);
            listasPreciosVentasDetalle.ShowDialog();
        }

        private void btnSalir_Click(Object sender, EventArgs e)
        {
            Close();
        }

        private void ClientesDetalle_Load(Object sender, EventArgs e)
        {
            try
            {
                presentador.Inicializar();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ConfigurationManager.AppSettings["NombreAplicacion"], MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        #endregion
    }
}
